home *** CD-ROM | disk | FTP | other *** search
- ;
- ; ***********************************
- ; * CONVERSOR DE PANTALLAS GRAFICAS *
- ; * para IBM PC y compatibles *
- ; ***********************************
- ; ________________________________
- ; SCREEN 2 (MSX) ----> MODO 6 (PC)
- ; 256*196 640*200
- ; --------------------------------
- ; AUTOR: Juan C. Enrique
- ;
- ; Version 1.0: 07/05/1992
- ;
- ;
-
- CODE_SEG SEGMENT PUBLIC
- ASSUME CS:CODE_SEG, DS:CODE_SEG
-
- ORG 100H
-
- EXTRN LOADFILE:NEAR ; uso del proc. externo 1
-
- BUFFCARG0 EQU CS:1000h-7
- BUFFCARGA EQU CS:1000h
- BUFFER EQU CS:3000h
-
- PRINCIPAL:
-
- CALL inpfile
-
- ;
- ; reorganiza los datos leidos del BUFFCARGA al BUFFER
- ; ---------------------------------------------------
-
- MOV DI,0
- MOV SI,DI
- MOV BX,OFFSET BUFFCARGA
- MOV AX,BX
- MOV DX,OFFSET BUFFER
-
- MOV CX,24
-
- BUCLE1: PUSH CX
- MOV CX,8
-
- BUCLE2: PUSH CX
- MOV DI,0 ; rein. contador linea
- MOV CX,32 ; bytes por linea
-
- BUCLE3: PUSH AX
- MOV AL,CS:[BX+DI]
- PUSH BX
- MOV BX,DX
- MOV CS:[BX+SI],AL
- POP BX
- POP AX
- INC SI
- ADD DI,8
- LOOP BUCLE3
-
- ADD BX,1 ; sigu. linea en BUFFCARGA
- POP CX
- LOOP BUCLE2
-
-
- ADD AX,256 ; sigu. bloque 8x24 en BUFFCARGA
- MOV BX,AX
- POP CX
- LOOP BUCLE1
-
-
- ;
- ; salida a pantalla de los datos en 2 bancos
- ; ------------------------------------------
-
- MOV AH,0
- MOV AL,6
- INT 10H ; modo 6 grafico
-
- MOV AX,0B800H
- MOV ES,AX ; ram de VIDEO en seg.extra
-
-
- MOV DX,OFFSET BUFFER
- MOV BX,0 ; dir VRAM 1º banco
- MOV SI,0
- BUCL:
- MOV CX,96 ; 192/2 lineas por banco
- BUCL1: PUSH CX
-
- MOV DI,0 ; contadore
-
- MOV CX,32 ; 32 bytes/linea
-
- BUCL2: PUSH AX
- PUSH BX
- MOV BX,DX
- MOV AL,CS:[BX+DI]
- POP BX
- MOV ES:[BX+DI],AL
- INC DI
- POP AX
-
- LOOP BUCL2
-
- ADD BX,80 ; inicio sig. linea VRAM
- ADD DX,64 ; lee lineas de 2en2 en BUFFER
- POP CX
- LOOP BUCL1
-
- CMP SI,0
- JNE END
-
-
- INC SI
-
- MOV BX,8192 ; dir VRAM 2º banco
- MOV DX,OFFSET BUFFER+32
- JMP BUCL
-
-
- END: CALL key13
- MOV AH,0
- MOV AL,2
- INT 10H
-
- MOV DX,OFFSET TEXTO3
- MOV AH,9
- INT 21H
-
- INT 20H ; vuelve al DOS
- ;
- ; * Otros Procedimientos *
- ;
-
- key13:
- PUSH AX
- key13b:
- MOV AH,8
- INT 21H
- CMP AL,13
- JNE key13b
- POP AX
- RET
-
- ;
-
- inpfile:
- MOV DX,OFFSET TEXTO0
- MOV AH,9
- INT 21H
-
- inpfile2:
- MOV DX,OFFSET TEXTO1
- MOV AH,9
- INT 21H
-
- LEA DX,filebuf
- MOV AL,10
- MOV AH,12
- INT 21H ; borra buf. teclado y lee cadena
-
- XOR AX,AX
- MOV AL,BYTE PTR [filebuf+1]
- CMP AX,0
- JZ inpfile2
- MOV BX,AX
- MOV BYTE PTR file[BX],0
-
-
- MOV DX,OFFSET file ; nom. y cam. fichero
- MOV BX,OFFSET BUFFCARG0 ; zona de transf
- MOV CX,6144+7 ; tamaño pantalla msx
- CALL LOADFILE
- JC error
- RET
-
- error:
- LEA DX,TEXTO2
- MOV AH,9
- INT 21H
- JMP inpfile2
-
- ;
-
- CLS:
- MOV AL,0
- MOV CX,0
- MOV DH,24
- MOV DL,79
- MOV BH,7
- MOV AH,6
- INT 10H
- MOV DX,0
- MOV BH,0
- MOV AH,2
- INT 10H
- RET
-
- ;
- ; ** Zona de DATOS ***
- ;
-
-
- TEXTO0 DB 10,13,"******************************************"
- DB 10,13,"* MSXGC.COM v1.0 / Juan C.Enrique May'92 *"
- DB 10,13,"******************************************"
- DB 10,13
- DB 10,13," Este programa adapta pantallas graficas de"
- DB 10,13,"MSX en modo SCREEN2 a modo 6 monocromo PC."
- DB 10,13,10,13,"$"
-
- TEXTO1 DB 10,13,"Nombre del fichero : $"
-
- TEXTO2 DB 7,10,13,"* ERROR: Fichero no encontrado !",10,13,"$"
-
- TEXTO3 DB "* OK: MSXGC v1.0 terminado!",10,13,10,13,"$"
- ;
-
- Vram1 DB 0,0
- Vram2 DB 0,0
- Buf1 DB 0,0
- Buf2 DB 0,0
-
- filebuf DB 38,0
- file DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
- CODE_SEG ENDS
- END PRINCIPAL